home *** CD-ROM | disk | FTP | other *** search
/ Visual Cafe 3 / Visual Cafe 3.ISO / Vcafe / Main.bin / WordBreakData.java < prev    next >
Text File  |  1998-09-22  |  22KB  |  438 lines

  1. /*
  2.  * @(#)WordBreakData.java    1.8 98/01/12
  3.  *
  4.  * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
  5.  * (C) Copyright IBM Corp. 1996 - All Rights Reserved
  6.  *
  7.  * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
  8.  *
  9.  *   The original version of this source code and documentation is copyrighted
  10.  * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
  11.  * materials are provided under terms of a License Agreement between Taligent
  12.  * and Sun. This technology is protected by multiple US and International
  13.  * patents. This notice and attribution to Taligent may not be removed.
  14.  *   Taligent is a registered trademark of Taligent, Inc.
  15.  *
  16.  * Permission to use, copy, modify, and distribute this software
  17.  * and its documentation for NON-COMMERCIAL purposes and without
  18.  * fee is hereby granted provided that this copyright notice
  19.  * appears in all copies. Please refer to the file "copyright.html"
  20.  * for further important copyright and licensing information.
  21.  *
  22.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
  23.  * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
  24.  * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
  25.  * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
  26.  * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
  27.  * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
  28.  *
  29.  */
  30.  
  31. package java.text;
  32.  
  33. /**
  34.  * The WordBreakData contains data used by SimpleTextBoundary
  35.  * to determine word breaks.
  36.  * @see #BreakIterator
  37.  */
  38. final class WordBreakData extends TextBoundaryData
  39. {
  40.     private static final byte BREAK = 0;
  41.     private static final byte letter = 1;
  42.     private static final byte number = 2;
  43.     private static final byte midLetter = 3;
  44.     private static final byte midLetNum = 4;
  45.     private static final byte preNum = 5;
  46.     private static final byte postNum = 6;
  47.     private static final byte midNum = 7;
  48.     private static final byte preMidNum = 8;
  49.     private static final byte blank = 9;
  50.     private static final byte lf = 10;
  51.     private static final byte kata = 11;
  52.     private static final byte hira = 12;
  53.     private static final byte kanji = 13;
  54.     private static final byte diacrit = 14;
  55.     private static final byte cr = 15;
  56.     private static final byte nsm = 16;
  57.     private static final byte EOS = 17;
  58.     private static final int COL_COUNT = 18;
  59.  
  60.     private static final byte SI = (byte)0x80;
  61.     private static final byte STOP = (byte) 0;
  62.     private static final byte SI_STOP = (byte)SI + STOP;
  63.  
  64.     private static final byte kWordForwardData[] =
  65.     {
  66.         // brk         let            num            mLe            mLN
  67.         // prN         poN            mNu            pMN            blk
  68.         // lf          kat            hir            kan            dia
  69.         // cr          nsm            EOS
  70.  
  71.         // 0
  72.         STOP,          STOP,          STOP,          STOP,          STOP,
  73.         STOP,          STOP,          STOP,          STOP,          STOP,
  74.         STOP,          STOP,          STOP,          STOP,          STOP,
  75.         STOP,          STOP,          STOP,
  76.  
  77.         // 1
  78.         (byte)(SI+14), (byte)(SI+2),  (byte)(SI+3),  (byte)(SI+14), (byte)(SI+14),
  79.         (byte)(SI+5),  (byte)(SI+14), (byte)(SI+14), (byte)(SI+5),  (byte)(SI+6),
  80.         (byte)(SI+4),  (byte)(SI+10), (byte)(SI+11), (byte)(SI+12), (byte)(SI+9),
  81.         (byte)(SI+13), (byte)(1),     SI_STOP,
  82.  
  83.         // 2
  84.         SI_STOP,       (byte)(SI+2),  (byte)(SI+3),  (byte)(SI+7),  (byte)(SI+7),
  85.         SI_STOP,       SI_STOP,       SI_STOP,       (byte)(SI+7),  SI_STOP,
  86.         SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,
  87.         SI_STOP,       (byte)(2),     SI_STOP,
  88.  
  89.         // 3
  90.         SI_STOP,       (byte)(SI+2),  (byte)(SI+3),  SI_STOP,       (byte)(SI+8),
  91.         SI_STOP,       (byte)(SI+14), (byte)(SI+8),  (byte)(SI+8),  SI_STOP,
  92.         SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,
  93.         SI_STOP,       (byte)(3),     SI_STOP,
  94.  
  95.         // 4
  96.         SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,
  97.         SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,
  98.         SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,
  99.         SI_STOP,       SI_STOP,       SI_STOP,
  100.  
  101.         // 5
  102.         SI_STOP,       SI_STOP,       (byte)(SI+3),  SI_STOP,       SI_STOP,
  103.         SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,
  104.         SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,
  105.         SI_STOP,       (byte)(5),     SI_STOP,
  106.  
  107.         // 6
  108.         SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,
  109.         SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,       (byte)(SI+6),
  110.         (byte)(SI+4),  SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,
  111.         (byte)(SI+13), (byte)(6),     SI_STOP,
  112.  
  113.         // 7
  114.         STOP,          (byte)(SI+2),  STOP,          STOP,          STOP,
  115.         STOP,          STOP,          STOP,          STOP,          STOP,
  116.         STOP,          STOP,          STOP,          STOP,          STOP,
  117.         STOP,          (byte)(7),     STOP,
  118.  
  119.         // 8
  120.         STOP,          STOP,          (byte)(SI+3),  STOP,          STOP,
  121.         STOP,          STOP,          STOP,          STOP,          STOP,
  122.         STOP,          STOP,          STOP,          STOP,          STOP,
  123.         STOP,          (byte)(8),     STOP,
  124.  
  125.         // 9
  126.         SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,
  127.         SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,
  128.         SI_STOP,       (byte)(SI+10), (byte)(SI+11), SI_STOP,       (byte)(SI+9),
  129.         SI_STOP,       (byte)(9),     SI_STOP,
  130.  
  131.         // 10
  132.         SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,
  133.         SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,
  134.         SI_STOP,       (byte)(SI+10), SI_STOP,       SI_STOP,       (byte)(SI+10),
  135.         SI_STOP,       (byte)(10),    SI_STOP,
  136.  
  137.         // 11
  138.         SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,
  139.         SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,
  140.         SI_STOP,       SI_STOP,       (byte)(SI+11), SI_STOP,       (byte)(SI+11),
  141.         SI_STOP,       (byte)(11),    SI_STOP,
  142.  
  143.         // 12
  144.         SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,
  145.         SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,
  146.         SI_STOP,       SI_STOP,       SI_STOP,       (byte)(SI+12), SI_STOP,
  147.         SI_STOP,       (byte)(12),    SI_STOP,
  148.  
  149.         // 13
  150.         SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,
  151.         SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,
  152.         (byte)(SI+4),  SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,
  153.         SI_STOP,       SI_STOP,       SI_STOP,
  154.  
  155.         // 14
  156.         SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,
  157.         SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,
  158.         SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,       SI_STOP,
  159.         SI_STOP,       (byte)(14),    SI_STOP
  160.     };
  161.     private static final WordBreakTable kWordForward =
  162.     new WordBreakTable(COL_COUNT, kWordForwardData);
  163.     private static final byte kWordBackwardData[] =
  164.     {
  165.         // brk         let            num            mLe            mLN
  166.         // prN         poN            mNu            pMN            blk
  167.         // lf          kat            hir            kan            dia
  168.         // cr          nsm            EOS
  169.  
  170.         // 0
  171.         STOP,          STOP,          STOP,          STOP,          STOP,
  172.         STOP,          STOP,          STOP,          STOP,          STOP,
  173.         STOP,          STOP,          STOP,          STOP,          STOP,
  174.         STOP,          STOP,          STOP,
  175.  
  176.         // 1
  177.         (byte)(SI+6),  (byte)(SI+2),  (byte)(SI+3),  (byte)(SI+4),  (byte)(SI+5),
  178.         (byte)(SI+6),  (byte)(SI+7),  (byte)(SI+7),  (byte)(SI+5),  (byte)(SI+8),
  179.         (byte)(SI+8),  (byte)(SI+9),  (byte)(SI+10), (byte)(SI+12), (byte)(SI+11),
  180.         (byte)(SI+8),  (byte)(1),     STOP,
  181.  
  182.         // 2
  183.         STOP,          (byte)(SI+2), (byte)(SI+3),   (byte)(4),     (byte)(4),
  184.         STOP,          STOP,          STOP,          (byte)(4),     STOP,
  185.         STOP,          STOP,          STOP,          STOP,          STOP,
  186.         STOP,          (byte)(2),     STOP,
  187.  
  188.         // 3
  189.         STOP,          (byte)(SI+2),  (byte)(SI+3),  STOP,          (byte)(7),
  190.         SI_STOP,       STOP,          (byte)(7),     (byte)(SI+7),  STOP,
  191.         STOP,          STOP,          STOP,          STOP,          STOP,
  192.         STOP,          (byte)(3),     STOP,
  193.  
  194.         // 4
  195.         STOP,          (byte)(SI+2),  STOP,          STOP,          STOP,
  196.         STOP,          STOP,          STOP,          STOP,          STOP,
  197.         STOP,          STOP,          STOP,          STOP,          STOP,
  198.         STOP,          (byte)(4),     STOP,
  199.  
  200.         // 5
  201.         STOP,          (byte)(SI+2), (byte)(SI+3), STOP,          STOP,
  202.         STOP,          STOP,          STOP,          STOP,          STOP,
  203.         STOP,          STOP,          STOP,          STOP,          STOP,
  204.         STOP,          (byte)(5),     STOP,
  205.  
  206.         // 6
  207.         STOP,          STOP,          STOP,          STOP,          STOP,
  208.         STOP,          STOP,          STOP,          STOP,          STOP,
  209.         STOP,          STOP,          STOP,          STOP,          STOP,
  210.         STOP,          (byte)(6),     STOP,
  211.  
  212.         // 7
  213.         STOP,          STOP,          (byte)(SI+3),  STOP,          STOP,
  214.         STOP,          STOP,          STOP,          STOP,          STOP,
  215.         STOP,          STOP,          STOP,          STOP,          STOP,
  216.         STOP,          (byte)(7),     STOP,
  217.  
  218.         // 8
  219.         STOP,          STOP,          STOP,          STOP,          STOP,
  220.         STOP,          STOP,          STOP,          STOP,          (byte)(SI+8),
  221.         (byte)(SI+8),  STOP,          STOP,          STOP,          STOP,
  222.         (byte)(SI+8),  (byte)(8),     STOP,
  223.  
  224.         // 9
  225.         STOP,          STOP,          STOP,          STOP,          STOP,
  226.         STOP,          STOP,          STOP,          STOP,          STOP,
  227.         STOP,          (byte)(SI+9),  STOP,          STOP,          (byte)(9),
  228.         STOP,          (byte)(9),     STOP,
  229.  
  230.         // 10
  231.         STOP,          STOP,          STOP,          STOP,          STOP,
  232.         STOP,          STOP,          STOP,          STOP,          STOP,
  233.         STOP,          STOP,          (byte)(SI+10),STOP,          (byte)(10),
  234.         STOP,          (byte)(10),    STOP,
  235.  
  236.         // 11
  237.         STOP,          STOP,          STOP,          STOP,          STOP,
  238.         STOP,          STOP,          STOP,          STOP,          STOP,
  239.         STOP,          (byte)(SI+9), (byte)(SI+10),  STOP,          (byte)(SI+11),
  240.         STOP,          (byte)(11),    STOP,
  241.  
  242.         // 12
  243.         STOP,          STOP,          STOP,          STOP,          STOP,
  244.         STOP,          STOP,          STOP,          STOP,          STOP,
  245.         STOP,          STOP,          STOP,          (byte)(SI+12), STOP,
  246.         STOP,          (byte)(12),    STOP
  247.     };
  248.     private static final WordBreakTable kWordBackward =
  249.     new WordBreakTable(COL_COUNT, kWordBackwardData);
  250.     private static final int kRawMapping[] =
  251.     {
  252.         BREAK,     // UNASSIGNED             = 0,
  253.         letter,    // UPPERCASE_LETTER       = 1,
  254.         letter,    // LOWERCASE_LETTER       = 2,
  255.         letter,    // TITLECASE_LETTER       = 3,
  256.         letter,    // MODIFIER_LETTER        = 4,
  257.         letter,    // OTHER_LETTER           = 5,
  258.         nsm,       // NON_SPACING_MARK       = 6,
  259.         nsm,       // ENCLOSING_MARK         = 7,
  260.         BREAK,     // COMBINING_SPACING_MARK = 8,
  261.         number,    // DECIMAL_DIGIT_NUMBER   = 9,
  262.         letter,    // LETTER_NUMBER          = 10,
  263.         number,    // OTHER_NUMBER           = 11,
  264.         blank,     // SPACE_SEPARATOR        = 12,
  265.         BREAK,     // LINE_SEPARATOR         = 13,
  266.         BREAK,     // PARAGRAPH_SEPARATOR    = 14,
  267.         BREAK,     // CONTROL                = 15,
  268.         BREAK,     // FORMAT                 = 16
  269.         BREAK,     // ????                   = 17,
  270.         BREAK,     // PRIVATE_USE            = 18,
  271.         BREAK,     // SURROGATE              = 19,
  272.         midLetter, // DASH_PUNCTUATION       = 20,
  273.         BREAK,     // START_PUNCTUATION      = 21,
  274.         BREAK,     // END_PUNCTUATION        = 22,
  275.         BREAK,     // CONNECTOR_PUNCTUATION  = 23,
  276.         BREAK,     // OTHER_PUNCTUATION      = 24,
  277.         BREAK,     // MATH_SYMBOL            = 25,
  278.         preNum,    // CURRENCY_SYMBOL        = 26,
  279.         BREAK,     // MODIFIER_SYMBOL        = 27,
  280.         BREAK      // OTHER_SYMBOL           = 28
  281.     };
  282.     private static SpecialMapping kExceptionChar[] =
  283.     {
  284.         //note: the ranges in this table must be sorted in ascending order
  285.         //as required by the UnicodeClassMapping class.
  286.         new SpecialMapping(ASCII_HORIZONTAL_TABULATION, blank),
  287.         new SpecialMapping(ASCII_LINEFEED, lf),
  288.         new SpecialMapping(ASCII_FORM_FEED, lf),
  289.         new SpecialMapping(ASCII_CARRIAGE_RETURN, cr),
  290.         new SpecialMapping(ASCII_QUOTATION_MARK, midLetNum),
  291.         new SpecialMapping(ASCII_NUMBER_SIGN, preNum),
  292.         new SpecialMapping(ASCII_PERCENT, postNum),
  293.         new SpecialMapping(ASCII_AMPERSAND, postNum),
  294.         new SpecialMapping(ASCII_APOSTROPHE, midLetNum),
  295.         new SpecialMapping(ASCII_COMMA, midNum),
  296.         new SpecialMapping(ASCII_FULL_STOP, preMidNum),
  297.         new SpecialMapping(ASCII_CENT_SIGN, postNum),
  298.         new SpecialMapping(LATIN1_SOFTHYPHEN, midLetter),
  299.         new SpecialMapping(ARABIC_PERCENT_SIGN, postNum),
  300.         new SpecialMapping(ARABIC_DECIMAL_SEPARATOR, midNum),
  301.         new SpecialMapping(PUNCTUATION_HYPHENATION_POINT, midLetter),
  302.         new SpecialMapping(PUNCTUATION_LINE_SEPARATOR,
  303.                            PUNCTUATION_PARAGRAPH_SEPARATOR, lf),
  304.         new SpecialMapping(PER_MILLE_SIGN, postNum),
  305.         new SpecialMapping(PER_TEN_THOUSAND_SIGN, postNum),
  306.         new SpecialMapping(HIRAGANA_LETTER_SMALL_A, HIRAGANA_LETTER_VU, hira),
  307.         new SpecialMapping(COMBINING_KATAKANA_HIRAGANA_VOICED_SOUND_MARK,
  308.                            HIRAGANA_SEMIVOICED_SOUND_MARK, diacrit),
  309.         new SpecialMapping(KATAKANA_LETTER_SMALL_A,
  310.                            KATAKANA_LETTER_SMALL_KE, kata),
  311.         new SpecialMapping(UNICODE_LOW_BOUND_HAN,
  312.                            UNICODE_HIGH_BOUND_HAN, kanji),
  313.         new SpecialMapping(HANGUL_SYL_LOW, HANGUL_SYL_HIGH, letter),
  314.         new SpecialMapping(CJK_COMPATIBILITY_F900,
  315.                            CJK_COMPATIBILITY_FA2D, kanji),
  316.         new SpecialMapping(END_OF_STRING, EOS)
  317.     };
  318.  
  319.     private static final boolean WordExceptionFlags[] = {
  320.         false,          // kNonCharacter            = 0,
  321.         false,          // kUppercaseLetter         = 1,
  322.         false,          // kLowercaseLetter         = 2,
  323.         false,          // kTitlecaseLetter         = 3,
  324.         false,          // kModifierLetter          = 4,
  325.         true,           // kOtherLetter             = 5,
  326.         true,           // kNonSpacingMark          = 6,
  327.         false,          // kEnclosingMark           = 7,
  328.         false,          // kCombiningSpacingMark    = 8,
  329.         false,          // kDecimalNumber           = 9,
  330.         false,          // kLetterNumber            = 10,
  331.         false,          // kOtherNumber             = 11,
  332.         false,          // kSpaceSeparator          = 12,
  333.         true,           // kLineSeparator           = 13,
  334.         true,           // kParagraphSeparator      = 14,
  335.         true,           // kControlCharacter        = 15,
  336.         false,          // kFormatCharacter         = 16,
  337.         false,          // UNDEFINED                = 17,
  338.         false,          // kPrivateUseCharacter     = 18,
  339.         false,          // kSurrogate               = 19,
  340.         true,           // kDashPunctuation         = 20,
  341.         false,          // kOpenPunctuation         = 21,
  342.         false,          // kClosePunctuation        = 22,
  343.         false,          // kConnectorPunctuation    = 23,
  344.         true,           // kOtherPunctuation        = 24,
  345.         false,          // kMathSymbol              = 25,
  346.         true,           // kCurrencySymbol          = 26,
  347.         false,          // kModifierSymbol          = 27,
  348.         false           // kOtherSymbol             = 28
  349.     };
  350.  
  351.     private static final int kWordAsciiValues[] = {
  352.         //  null    soh     stx     etx     eot     enq     ask     bell
  353.             BREAK,  BREAK,  BREAK,  BREAK,  BREAK,  BREAK,  BREAK,  BREAK,
  354.         //  bs      ht      lf      vt      ff      cr      so      si
  355.             BREAK,  blank,  lf,     BREAK,  lf,     cr,     BREAK,  BREAK,
  356.         //  dle     dc1     dc2     dc3     dc4     nak     syn     etb
  357.             BREAK,  BREAK,  BREAK,  BREAK,  BREAK,  BREAK,  BREAK,  BREAK,
  358.         //  can     em      sub     esc     fs      gs      rs      us
  359.             BREAK,  BREAK,  BREAK,  BREAK,  BREAK,  BREAK,  BREAK,  BREAK,
  360.         //  sp      !       "          #       $       %        &        '
  361.             blank,  BREAK,  midLetNum, preNum, preNum, postNum, postNum, midLetNum,
  362.         //  (       )       *       +       ,       -          .          /
  363.             BREAK,  BREAK,  BREAK,  BREAK,  midNum, midLetter, preMidNum, BREAK,
  364.         //  0       1       2       3       4       5       6       7
  365.             number, number, number, number, number, number, number, number,
  366.         //  8       9       :       ;       <       =       >       ?
  367.             number, number, BREAK,  BREAK,  BREAK,  BREAK,  BREAK,  BREAK,
  368.         //  @       A       B       C       D       E       F       G
  369.             BREAK,  letter, letter, letter, letter, letter, letter, letter,
  370.         //  H       I       J       K       L       M       N       O
  371.             letter, letter, letter, letter, letter, letter, letter, letter,
  372.         //  P       Q       R       S       T       U       V       W
  373.             letter, letter, letter, letter, letter, letter, letter, letter,
  374.         //  X       Y       Z       [       \       ]       ^       _
  375.             letter, letter, letter, BREAK,  BREAK,  BREAK,  BREAK,  BREAK,
  376.         //  `       a       b       c       d       e       f       g
  377.             BREAK,  letter, letter, letter, letter, letter, letter, letter,
  378.         //  h       i       j       k       l       m       n       o
  379.             letter, letter, letter, letter, letter, letter, letter, letter,
  380.         //  p       q       r       s       t       u       v       w
  381.             letter, letter, letter, letter, letter, letter, letter, letter,
  382.         //  x       y       z       {       |       }       ~       del
  383.             letter, letter, letter, BREAK,  BREAK,  BREAK,  BREAK,  BREAK,
  384.         //  ctrl    ctrl    ctrl    ctrl    ctrl    ctrl    ctrl    ctrl
  385.             BREAK,  BREAK,  BREAK,  BREAK,  BREAK,  BREAK,  BREAK,  BREAK,
  386.         //  ctrl    ctrl    ctrl    ctrl    ctrl    ctrl    ctrl    ctrl
  387.             BREAK,  BREAK,  BREAK,  BREAK,  BREAK,  BREAK,  BREAK,  BREAK,
  388.         //  ctrl    ctrl    ctrl    ctrl    ctrl    ctrl    ctrl    ctrl
  389.             BREAK,  BREAK,  BREAK,  BREAK,  BREAK,  BREAK,  BREAK,  BREAK,
  390.         //  ctrl    ctrl    ctrl    ctrl    ctrl    ctrl    ctrl    ctrl
  391.             BREAK,  BREAK,  BREAK,  BREAK,  BREAK,  BREAK,  BREAK,  BREAK,
  392.         //  nbsp    í       ó       ú       ñ       Ñ       ª
  393.             blank,  BREAK,  postNum, preNum, preNum, preNum, BREAK,  BREAK,
  394.         //  ¿       ⌐       ¬       ½       ¼       ¡       «       »
  395.             BREAK,  BREAK,  letter, BREAK,  BREAK,  midLetter, BREAK, BREAK,
  396.         //  ░       ▒       ▓       │       ┤       ╡       ╢       ╖
  397.             BREAK,  BREAK,  number, number, BREAK,  letter, BREAK,  BREAK,
  398.         //  ╕       ╣       ║       ╗       ╝       ╜       ╛       ┐
  399.             BREAK,  letter, BREAK,  BREAK,  number, number, number, BREAK,
  400.         //  └       ┴       ┬       ├       ─       ┼       ╞       ╟
  401.             letter, letter, letter, letter, letter, letter, letter, letter,
  402.         //  ╚       ╔       ╩       ╦       ╠       ═       ╬       ╧
  403.             letter, letter, letter, letter, letter, letter, letter, letter,
  404.         //  ╨       ╤       ╥       ╙       ╘       ╒       ╓       ╫
  405.             letter, letter, letter, letter, letter, letter, letter, BREAK,
  406.         //  ╪       ┘       ┌       █       ▄       ▌       ▐       ▀
  407.             letter, letter, letter, letter, letter, letter, letter, letter,
  408.         //  α       ß       Γ       π       Σ       σ       µ       τ
  409.             letter, letter, letter, letter, letter, letter, letter, letter,
  410.         //  Φ       Θ       Ω       δ       ∞       φ       ε       ∩
  411.             letter, letter, letter, letter, letter, letter, letter, letter,
  412.         //  ≡       ±       ≥       ≤       ⌠       ⌡       ÷       ≈
  413.             letter, letter, letter, letter, letter, letter, letter, BREAK,
  414.         //  °       ∙       ·       √       ⁿ       ²       ■        
  415.             letter, letter, letter, letter, letter, letter, letter, letter
  416.     };
  417.  
  418.     private static final UnicodeClassMapping kWordMap
  419.         = new UnicodeClassMapping(kRawMapping, kExceptionChar, WordExceptionFlags,
  420.         kWordAsciiValues);
  421.  
  422.     public WordBreakTable forward()
  423.     {
  424.         return kWordForward;
  425.     }
  426.  
  427.     public WordBreakTable backward()
  428.     {
  429.         return kWordBackward;
  430.     }
  431.  
  432.     public UnicodeClassMapping map()
  433.     {
  434.         return kWordMap;
  435.     }
  436. }
  437.  
  438.